const axios = require('axios');
const mongoose = require('mongoose');  // 引入 mongoose
const Movie = mongoose.model('Movie');  // 获取 Movie 模型
const Category = mongoose.model('Category');  // 获取 Category 模型

const doubanMovieUrl = 'https://api.douban.com/v2/movie/';
const apiKey = 'apikey=0b2bdeda43b5688921839c8ecb20399b';

(async () => {
  // 获取数据库中所有满足条件的 movie，以下四个条件满足一个即可
  const movies = await Movie.find({
    $or: [{
      summary: { $exists: false }
    }, {
      summary: null
    }, {
      title: ''
    }, {
      summary: ''
    }]
  });

  movies.forEach(async (movie) => {
    const doubanId = movie.doubanId;
    const res = await axios.get(`${doubanMovieUrl}${doubanId}?${apiKey}`);

    if (res.data) {
      const movieData = res.data;
      // console.log(movieData);
      // 将获取到的数据赋值给 movie
      movie.summary = movieData.summary || '';  // 简介
      movie.rawTitle = movieData.title || '';  // 原始标题

      if (movieData.attrs) {
        movie.year = +movieData.attrs.year[0] || 2500;  // 上映年份
        movie.movieTypes = movieData.attrs.movie_type || [];  // 电影分类
        movie.pubDate = movieData.attrs.pubdates || '';  // 上映日期

        for (let i = 0; i < movie.movieTypes.length; i++) {
          let cat = await Category.findOne({
            name: movie.movieTypes[i]
          });
  
          if (!cat) {
            // 如果没有该分类, 则创建分类
            // 并将该电影的 _id 添加到该分类中
            cat = new Category({
              name: movie.movieTypes[i],
              movies: [ movie._id ]  // _id 是创建模型时自动生成的
            })
          } else {
            // 如果有该分类，并且没有该电影的 _id
            // 则将该电影的 _id 添加到该分类中
            // cat.movies.forEach((item) => {
            //   if (item.indexOf(movie._id) === -1) {
            //     cat.movies.push(movie._id);
            //   }
            // })
            console.log(typeof(cat.movies));
            if (cat.movies.indexOf(movie._id) === -1) {
              cat.movies.push(movie._id);
            }
          }

          await cat.save();  // 保存

          if (!movie.category) {
            // 如果 movie 中的 category 为空，则将 _id 添加进来
            movie.category.push(cat._id);
          } else {
            // 如果 movie 中的 category 不为空，则判断是否有这个 _id
            // 如果有，则不作任何处理；如果没有，则添加进来
            // movie.category.forEach((item) => {
            //   if (item.indexOf(cat._id) === -1) {
            //     movie.category.push(cat._id);
            //   }
            // })
            console.log(typeof(movie.category));
            if (movie.category.indexOf(cat._id) === -1) {
              movie.category.push(cat._id);
            }
          }
        }
        // movie.movieTypes.forEach(async (item) => {
          // 在 Category 模型中查找是否有该分类
          // let cat = await Category.findOne({
          //   name: item
          // });
  
          // if (!cat) {
          //   // 如果没有该分类, 则创建分类
          //   // 并将该电影的 _id 添加到该分类中
          //   cat = new Category({
          //     name: item,
          //     movies: [ movie._id ]  // _id 是创建模型时自动生成的
          //   })
          // } else {
          //   // 如果有该分类，并且没有该电影的 _id
          //   // 则将该电影的 _id 添加到该分类中
          //   if (cat.movies.indexOf(movie._id) === -1) {
          //     cat.movies.push(movie._id);
          //   }
          // }

          // await cat.save();  // 保存
  
          // if (!movie.category) {
          //   // 如果 movie 中的 category 为空，则将 _id 添加进来
          //   movie.category.push(cat._id);
          // } else {
          //   // 如果 movie 中的 category 不为空，则判断是否有这个 _id
          //   // 如果有，则不作任何处理；如果没有，则添加进来
          //   if (movie.category.indexOf(cat._id) === -1) {
          //     movie.category.push(cat._id);
          //   }
          // }
        // });
      }

      await movie.save();  // 保存
    }
  })
})();


